package com.mastercard.assets.web.util.to;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import com.mastercard.assets.jpa.TblAsset;
import com.mastercard.assets.jpa.TblFlujo;
import com.mastercard.assets.jpa.TblPreimplementacion;
import com.mastercard.assets.jpa.TblTarea;
import com.mastercard.assets.jpa.TblTareaPreimplementacion;

public class FlujoWraper
	implements
		Serializable
{
	private TblPreimplementacion flujoPreimplementacion ;
	private List< TblTarea > tareasTotales = new ArrayList< TblTarea >( ) ;
	private List< TblTareaPreimplementacionWraper > tareasRegistradas = new ArrayList< TblTareaPreimplementacionWraper >( ) ;
	private List< TblAsset > assets = new ArrayList< TblAsset >( ) ;
	private TblFlujo flujo ;
	
	public FlujoWraper( TblPreimplementacion flujoPreimplementacion )
	{
		this.flujoPreimplementacion = flujoPreimplementacion ;
		
		// toma las tareas del flujo
		flujo = flujoPreimplementacion.getTblFlujo( ) ;
		
		// recorre las tareas
		if( flujo != null )
		{
			List< TblTarea > tareas = flujo.getTblTareas( ) ;
			
			for( TblTarea tarea : tareas )
			{
				// en caso de que no este status 0
				if( tarea.getStatus( ) != 0 )
					tareasTotales.add( tarea ) ;
			}
		}
		
		// tareasPreimplemnetacion
		List< TblTareaPreimplementacion > tps = flujoPreimplementacion.getTblTareaPreimplementacions( ) ;
		
		// recorre
		for( TblTareaPreimplementacion tp : tps )
		{
			tareasRegistradas.add( new TblTareaPreimplementacionWraper( tp ) ) ;
		}
		
		// assets
		List< TblAsset > ass = flujoPreimplementacion.getTblAssets( ) ;
		
		// recorre
		for( TblAsset asset : ass )
		{
			// en caso de status 0
			if( asset.getStatus( ) == 0 )
				// siguiente
				continue ;
			
			assets.add( asset ) ;
		}
		
		
	}
	
	public String getNombre( )
	{
		if( this.flujoPreimplementacion == null )
			return "" ;
		
		return flujoPreimplementacion.getTblFlujo( ).getNombre( ) ;
	}
	
	public String getEstado( )
	{
		if( this.flujoPreimplementacion == null )
			return "" ;
		
		int bandera = flujoPreimplementacion.getBandera( ) ;
		
		switch( bandera )
		{
			case 1 :
				return "Iniciado" ;
				
			case 2 :
				return "Finalizado" ;
				
			case 3 :
				return "Detenido" ;
				
			default :
				return "Desconocido" ;
		}
		
	}
	
	public int getTareasTotales( )
	{
		return tareasTotales.size( ) ;
	}
	
	public List< TblTareaPreimplementacionWraper > getTareasRegistradas( )
	{
		return tareasRegistradas ;
	}
	
	public int getNumOfAssets( )
	{
		return assets.size( ) ;
	}
	
	public String getAssetsList( )
	{
		int size = assets.size( ) ;
		StringBuffer sb = new StringBuffer( ) ;
		int last = size - 1 ;
		
		
		// recorre los assets
		for( int i = 0 ; i < size ; i++ )
		{
			// toma el asset
			TblAsset asset = assets.get( i ) ;
			
			// agrega nombre
			sb.append( asset.getNombre( ) ) ;
			
			// en caso de que no sea ultimo
			if( i < last )
				sb.append( ", " ) ;
		}
		
		String res = sb.toString( ) ;
		sb.setLength( 0 ) ;
		sb = null ;
		return res ;
	}
}
